﻿// pch.h: 这是预编译标头文件。
// 下方列出的文件仅编译一次，提高了将来生成的生成性能。
// 这还将影响 IntelliSense 性能，包括代码完成和许多代码浏览功能。
// 但是，如果此处列出的文件中的任何一个在生成之间有更新，它们全部都将被重新编译。
// 请勿在此处添加要频繁更新的文件，这将使得性能优势无效。

#ifndef PCH_H
#define PCH_H

// 添加要在此处预编译的标头

//#include "framework.h"
#include <iostream> 
#include <string>
#include <typeinfo>
#include <algorithm>

#ifdef _WIN32
#include "windows.h"
#define LOADLIB(libName) LoadLibrary(libName)
#define GETPROC GetProcAddress
#define FREELIB FreeLibrary
#endif

#ifdef __linux__
#include <dlfcn.h>

//code by gpt
#if 0

#define LOADLIB(libName) dlopen(libName, RTLD_LAZY)

int main() {
    void* handle = dlopen("libexample.so", RTLD_LAZY); //  libexample.so

    if (!handle) {
        std::cerr << "Error loading library: " << dlerror() << std::endl;
        return 1;
    }

    void (*hello)() = (void (*)())dlsym(handle, "hello");
    if (!hello) {
        std::cerr << "Error finding symbol: " << dlerror() << std::endl;
        dlclose(handle);
        return 1;
    }

    hello();

    dlclose(handle); // 关闭句柄

    return 0;
}
#endif

#endif 

#endif //PCH_H
